﻿using System;

namespace AndersLiu.RubikCubeModel
{
	/// <summary>
	/// 表示块的位置。
	/// </summary>
	public enum Location : byte
	{
		//
		// 中心位置
		//
		R = 0x01,
		U = 0x02,
		F = 0x04,
		L = 0x10,
		D = 0x20,
		B = 0x40,

		//
		// 棱位置
		// （本来只有12条棱，为了方便，进行了重复定义。）
		//
		RU = R | U,
		RB = R | B,
		RD = R | D,
		RF = R | F,

		UB = U | B,
		UR = R | U,
		UF = U | F,
		UL = U | L,

		FU = F | U,
		FR = F | R,
		FD = F | D,
		FL = F | L,

		LU = L | U,
		LF = L | F,
		LD = L | D,
		LB = L | B,

		DF = D | F,
		DR = D | R,
		DB = D | B,
		DL = D | L,

		BD = B | D,
		BR = B | R,
		BU = B | U,
		BL = B | L,

		//
		// 角位置
		// （本来只有8个角，为了方便，进行了重复定义。）
		//
		RFU = R | F | U,
		RUB = R | U | B,
		RBD = R | B | D,
		RDF = R | D | F,

		ULB = U | L | B,
		UBR = U | B | R,
		URF = U | R | F,
		UFL = U | F | L,

		FLU = F | L | U,
		FUR = F | U | R,
		FRD = F | R | D,
		FDL = F | D | L,

		LBU = L | B | U,
		LUF = L | U | F,
		LFD = L | F | D,
		LDB = L | D | B,

		DLF = D | L | F,
		DFR = D | F | R,
		DRB = D | R | B,
		DBL = D | B | L,

		BRU = B | R | U,
		BUL = B | U | L,
		BLD = B | L | D,
		BDR = B | D | R,
	}
}
